//进行axios二次封装：使用请求与响应拦截器
import axios from "axios";
import { ElMessage } from "element-plus";

let request = axios.create({
    //基础路径上会携带/api
    baseURL:import.meta.env.VITE_APP_BASE_API,
    ///超时时间限制的设置
    timeout:5000
})
//添加请求与响应拦截器
request.interceptors.request.use( (config:any) => {
    //返回配置对象
    return config
})

//响应拦截器
request.interceptors.response.use((response:any) => {
    return response.data
},(error:any) => {
    //失败的回调：处理http网络错误
    let msg = '';
    //http状态码
    let status = error.response.status;
    switch(status){
        case 401:
            msg = "token过期";
            break;
        case 403:
            msg = '无权访问';
            break;
        case 404:
            msg = "请求地址错误";
            break;
        case 500:
            msg = "服务器出现问题";
            break;
        default:
            msg = "无网络"; 
    }
    ElMessage({
        type:'error',
        message:msg
    })
    return Promise.reject(error)
});

export default request;